// import 'dart:async';
// import 'dart:io';
// import 'dart:isolate';
// import 'dart:ui';
// import 'package:device_info_plus/device_info_plus.dart';
// import 'package:dio/dio.dart';
// import 'package:flutter/material.dart';
// import 'package:flutter_bilibili/core/service/utils/http_download.dart';
// import 'package:flutter_downloader/flutter_downloader.dart';
// import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
// import 'package:path_provider/path_provider.dart';
// import 'package:permission_handler/permission_handler.dart';
//
// const debug = true;
//
// void main() async {
//   runApp(new MyApp());
// }
//
// class MyApp extends StatelessWidget {
//   @override
//   Widget build(BuildContext context) {
//     final platform = Theme.of(context).platform;
//
//     return new MaterialApp(
//       title: 'Flutter Demo',
//       theme: new ThemeData(
//         primarySwatch: Colors.blue,
//       ),
//       home: new FileDownlaodPage(),
//     );
//   }
// }
//
// class FileDownlaodPage extends StatefulWidget {
//   @override
//   _FileDownlaodPageState createState() => _FileDownlaodPageState();
// }
//
// class _FileDownlaodPageState extends State<FileDownlaodPage> {
//   String _downloadPath =
//       'https://www.w3school.com.cn/example/html5/mov_bbb.mp4';
//   double _downloadRatio = 0.0;
//   String _downloadIndicator = '0.00%';
//   late String _destPath;
//   late CancelToken _token;
//   bool _downloading = false;
//
//   @override
//   void initState() {
//     requestPermissions();
//     _prepareSaveDir();
//     super.initState();
//   }
//
//   void requestPermissions() async {
//     Map<Permission, PermissionStatus> statuses = await [
//       Permission.storage,
//       Permission.manageExternalStorage,
//     ].request();
//     // print('manageExternalStorage权限：${statuses[Permission.manageExternalStorage]}');
//     // print('storage权限：${statuses[Permission.storage]}');
//   }
//
//   Future<void> _prepareSaveDir() async {
//     _destPath = (await _findLocalPath())! + "/bilibili_download";
//     final savedDir = Directory(_destPath);
//     print(_destPath);
//     bool hasExisted = await savedDir.exists();
//     if (!hasExisted) {
//       savedDir.create();
//     }
//   }
//
//   Future<String?> _findLocalPath() async {
//     String? externalStorageDirPath;
//     if (Platform.isAndroid) {
//       final directory =
//           await getExternalStorageDirectory();
//       externalStorageDirPath = directory.path;
//     } else if (Platform.isIOS) {
//       externalStorageDirPath =
//           (await getApplicationDocumentsDirectory()).absolute.path;
//     }
//     return externalStorageDirPath;
//   }
//
//   void _downloadFile() {
//     _token = CancelToken();
//     _downloading = true;
//     HttpDownload.download(_downloadPath, _destPath, cancelToken: _token,
//         onReceiveProgress: (int received, int total) {
//       if (total != -1) {
//         if (!_token.isCancelled) {
//           setState(() {
//             _downloadRatio = (received / total);
//             if (_downloadRatio == 1) {
//               _downloading = false;
//             }
//             _downloadIndicator =
//                 (_downloadRatio * 100).toStringAsFixed(2) + '%';
//           });
//         }
//       } else {
//         _downloading = false;
//         SmartDialog.showToast("无法获取文件大小，下载失败!");
//       }
//     });
//   }
//
//   void _cancelDownload() {
//     if (_downloadRatio < 1.0) {
//       _token.cancel();
//       _downloading = false;
//       setState(() {
//         _downloadRatio = 0;
//         _downloadIndicator = '0.00%';
//       });
//     }
//   }
//
//   void _deleteFile() {
//     try {
//       File downloadedFile = File(_destPath);
//       if (downloadedFile.existsSync()) {
//         downloadedFile.delete();
//       } else {
//         SmartDialog.showToast("文件不存在");
//       }
//     } catch (e) {
//       SmartDialog.showToast("e.toString()");
//     }
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(
//         title: Text('文件下载', style: Theme.of(context).textTheme.headline4),
//         brightness: Brightness.dark,
//       ),
//       body: Center(
//         child: Container(
//           alignment: Alignment.center,
//           margin: EdgeInsets.all(10),
//           child: Column(
//             mainAxisAlignment: MainAxisAlignment.center,
//             children: [
//               Row(
//                 children: [
//                   Expanded(
//                     child: GestureDetector(
//                       child: Text("data"),
//                       onTap: () {
//                         _downloadFile();
//                       },
//                     ),
//                   ),
//                   TextButton(
//                     child: Text('取消'),
//                     onPressed: () {
//                       _cancelDownload();
//                     },
//                   ),
//                   TextButton(
//                     child: Text(
//                       '删除',
//                       style: TextStyle(
//                           color: !_downloading ? Colors.red : Colors.grey),
//                     ),
//                     onPressed: (!_downloading ? _deleteFile : null),
//                     style: ButtonStyle(),
//                   ),
//                 ],
//               ),
//               Row(children: [
//                 Expanded(
//                   child: LinearProgressIndicator(
//                     backgroundColor: Colors.grey[600],
//                     value: _downloadRatio,
//                   ),
//                 ),
//                 SizedBox(
//                   width: 5,
//                 ),
//                 Text(
//                   _downloadIndicator,
//                   style: TextStyle(color: Colors.black, fontSize: 12.0),
//                 ),
//               ]),
//             ],
//           ),
//         ),
//       ),
//     );
//   }
// }
